package hy.iot.core.annotation;

import hy.iot.core.entity.parseTypeEnum;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;


@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface IotField {

    /**
     * 字段编号
     *
     * @return
     */
    String code() default "";

    /**
     * 字段数值
     *
     * @return
     */
    String value() default "";

    /**
     * 字段描述
     *
     * @return
     */
    String desc() default "";

    /**
     * 协议版本
     *
     * @return
     */
    String[] version() default {"0"};

    /**
     * 字段解析类型
     *
     * @return
     */
    parseTypeEnum parseType() default parseTypeEnum.STRING;

    /**
     * 解析器
     * @return
     */
    String parseSchema() default "HexToStringSchema";

    /**
     * 数据开始
     *
     * @return
     */
    int hexStart() default 0;

    /**
     * 数据长度
     *
     * @return
     */
    int hexLength() default 1;



    /**
     * 数据分割符选项
     *
     * @return
     */
    String hexValueOptions() default "";

    /**
     * 数据分隔符之后下标
     *
     * @return
     */
    int hexValueIndex() default 0;
    /**
     * 可变缩放值 放大
     *
     * @return
     */
    int zoomNum() default 1;

    /**
     * 之后几位追加
     *
     * @return
     */
    int afterZoomNum() default 0;
    /**
     * 之后几位追加
     *
     * @return
     */
    String concat() default ",";

}